// PROGRAMA : SCRP1510
// SISTEMA : SISP - SISTEMA DE INFORMACOES DE SEGURANCA PUBLICA
// IDENTIFICACAO CRIMINAL
// BIBLIOTECA : SISP
// CLIENTE : GEJUSPC - GERENCIA DE ESTADO DA JUSTICA, SEGURANCA
// PUBLICA E CIDADANIA / INSTITUTO DE IDENT.
// OBJETIVO : INCLUSAO DE USUARIOS
// PROGRAMADOR: BRUNO LOPES COSTA
// DATA : 25 DE JUNHO DE 1998
// ALTERACAO : 04/11/1999 TELA DATA (N6) PARA (N8) POR SOLON

package br.com.vti.sisp_sicrim.antigo.controller.programa;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.vti.sisp_sicrim.antigo.controller.tela.Scrm1400;
import br.com.vti.sisp_sicrim.antigo.model.SicSenha;
import br.com.vti.sisp_sicrim.antigo.util.ExceptionProgram;
import br.com.vti.sisp_sicrim.antigo.util.Scrg001;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;
import br.com.vti.sisp_sicrim.antigo.util.UtilBean;

/**
 * Classe : Scrp1510 OBJETIVO : INCLUSAO DE USUARIOS *
 * 
 * @author Incode - Data: mai/2014
 * 
 */

@Resource
@Path("/antigo/scrp1510")
public class Scrp1510 {
	Scrp1510 scrp1510Anterior;
	// Views utilizadas
	SicSenha senhaView = new SicSenha();
	// Telas/relatorios utilizados
	Scrm1400 scrm1400;
	Date data;
	// Scrp1510A scrp1510A;
	// Includes utilizados
	// Areas globais / session
	Scrg001 scrg001; // Funcoes/subrotinas
	FuncoesGerais funcoes = new FuncoesGerais();
	Result result;
	Sessao sessao;
	Boolean primeiraVez = false;

	private String jHora;
	private int jData;
	private String[] jTabMes = { null, "Janeiro", "Fevereiro", "Marco", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro" };

	private String faseproc = "";

	private Scrm1400 preMapas() {
		scrm1400 = new Scrm1400(true, sessao);
		// scrp1510A = new Scrp1510A(true, sessao);
		sessao.getScrg001().setWVltw(11);
		data = new Date();
		sessao.getScrg001().setWProgramaw(this.getClass().getSimpleName().toUpperCase());
		sessao.getScrg001().setWFuncaow("INCLUSAO");
		scrm1400.setJfuncaoj("INCLUSAO");
		faseproc = "";
		scrm1400.setJtipo(1);
		jData = UtilBean.obtemDataCorrente();
		scrm1400.setJdia((int) UtilBean.extraiDigitos(jData, 8, 6, 2));
		scrm1400.setJnomedomes(jTabMes[(int) UtilBean.extraiDigitos(jData, 8, 4, 2)]);
		scrm1400.setJano(UtilBean.extraiDigitos(jData, 8, 0, 4) + "");
		jHora = new SimpleDateFormat("HH:mm:ss").format(Calendar.getInstance().getTime());
		scrm1400.setJhoras(jHora);

		// Par�grafo: fd1()
		while (senhaView.pesquisaMatricula(sessao.getScrg001().getWMatriculaw())) {
			// 94

			scrm1400.setJmatriculacadastrou(sessao.getScrg001().getWMatriculaw());
			scrm1400.setJnomecadastrou(senhaView.getNome());
		}
		senhaView.fecha();
		return scrm1400;
	}

	public Scrp1510(Result result, Sessao sessao) {
		this.result = result;
		this.sessao = sessao;
	}

	@Post
	public void executar(Scrm1400 scrm1400) {
		try {
			main(scrm1400);
		} catch (Exception e) {
			ExceptionProgram excp = new ExceptionProgram();
			excp.trataErroScrcerro(e, sessao, this.getClass().getSimpleName());
		}
	}

	private void main(Scrm1400 pscrm1400) {
		if (pscrm1400 == null) {
			primeiraVez = true;
			scrm1400 = preMapas();
			scrm1400.setNavegar("../scrp1510/executar");
			result.include("scrm1400", scrm1400);
			sessao.setAtributo("Scrp1510", this);
			scrm1400.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
			return;
		} else {
			restaurarEstados(pscrm1400);
		}

		scrm1400.receberTela(false, result);
		if (scrm1400.temMensagem) {
			result.include("scrm1400", scrm1400);
			sessao.setAtributo("Scrp1510", this);
			scrm1400.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
			return;
		}
		if (UtilBean.funcao.equals(UtilBean.ctt_retorna)) {
			Scrp1500 scrp1500 = new Scrp1500(this.result, this.sessao);
			scrp1500.executar(null);
			return;
		}

		// Par�grafo: fd2()
		senhaView.pesquisaMatricula(scrm1400.getJmatriculacadastrado());
		if (senhaView.registrosProcessados() > 0) {
			scrm1400.enviarMensagem("jMatriculaCadastrado", "Usuario Ja Foi Cadastrado Anteriormente - Consulte-o");
			result.include("scrm1400", scrm1400);
			scrm1400.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
			return;
		}
		senhaView.fecha();

		if (scrm1400.getJconf().trim().equals("")) {
			scrm1400.enviarMensagem(null, "Confirme �S� ou �N�");

		}

		if (!((scrm1400.getJconf().equals("S") || scrm1400.getJconf().equals("N")))) {
			scrm1400.enviarMensagem("jConf", "Confirmacao invalida");

		}

		if (scrm1400.getJconf().equals("N")) {
			// dao.rollback();
		} else {
			senhaView.setMatricula(scrm1400.getJmatriculacadastrado());
			senhaView.setNome(scrm1400.getJnomecadastrado());
			senhaView.setSenha(scrm1400.getJsenhacadastrado());
			senhaView.setNivel(scrm1400.getJopcao());
			senhaView.setMatAtualizador(sessao.getScrg001().getWMatriculaw());
			senhaView.setDataProc(jData);
			senhaView.setHoraProc(Integer.valueOf(new SimpleDateFormat("HHmmss").format(data)));
			senhaView.grava();
			// dao.commit();
			preMapas();
			scrm1400.setMensagem("INCLUSAO EFETUADA COM SUCESSO");
		}

		sessao.setAtributo("Scrp1510", this);
		result.include("scrm1400", scrm1400);
		if (!result.used()) {
			scrm1400.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
		}
	}

	private void restaurarEstados(Scrm1400 pscrm1400) {
		this.scrp1510Anterior = (Scrp1510) sessao.getAtributo("Scrp1510");
		if (pscrm1400 != null) {
			scrm1400 = pscrm1400;
			scrm1400.setJfuncaoj("INCLUSAO");
			scrm1400.setJversaoj(sessao.getScrg001().getWVersaow());
			scrm1400.setJempresaj(sessao.getScrg001().getWEmpresaw());
			scrm1400.setJprogramaj(sessao.getScrg001().getWProgramaw());
		} else {
			scrm1400 = this.scrp1510Anterior.scrm1400;
		}
		scrm1400.setSessao(sessao);

		this.faseproc = this.scrp1510Anterior.faseproc;
		this.jData = this.scrp1510Anterior.jData;
		this.data = this.scrp1510Anterior.data;
	}

}
